package com.bkhech.satoken.controller;

import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Sa-Token 同端互斥登录示例
 *
 * @author guowm
 * @date 2023/8/17
 */
@RestController
@RequestMapping("/mutex/")
public class MutexLoginController {

    /**
     * 会话登录接口
     *
     * 前提1：准备至少三个浏览器：A、B、C
     *      A、B 使用不同端去登录，例如 device=PC 或者 APP, 然后，分别使用 C 去登录顶下线，看A、B状态
     * 前提2：配置文件需要把 sa-token.is-concurrent 的值改为 false
     *
     * @param userId
     * @param device
     * @return
     */
    @RequestMapping("login")
    public SaResult login(long userId, String device) {
        StpUtil.login(userId, device);
        return SaResult.ok("登录成功");
    }

    /**
     * 查询当前登录状态
     *
     * @return
     */
    @RequestMapping("isLogin")
    public SaResult isLogin() {
        final boolean isLogin = StpUtil.isLogin();
        return SaResult.ok("当前客户端是否登录：" + isLogin + ", 登录的设备是：" + StpUtil.getLoginDevice());
    }
}
